Connection Timeout এবং Socket Timeout সেট করা

Java Technologies - অ্যাপাচি এইচটিটিপি ক্লায়েন্ট (Apache HTTP Client) Timeouts এবং Connection Management |
184
184

অ্যাপাচি HTTP ক্লায়েন্টে, Connection Timeout এবং Socket Timeout দুটি গুরুত্বপূর্ণ কনফিগারেশন যা HTTP রিকোয়েস্টের সময় নির্ধারণ করতে সাহায্য করে:

  • Connection Timeout: এটি সেই সময়কাল যা ক্লায়েন্ট সার্ভারের সাথে সংযোগ স্থাপন করার জন্য অপেক্ষা করবে। যদি এই সময়সীমার মধ্যে সংযোগ স্থাপন না হয়, তবে ক্লায়েন্ট একটি ত্রুটি (exception) ঘটাবে।
  • Socket Timeout: এটি সেই সময়কাল যা ক্লায়েন্ট সার্ভারের সাথে সংযোগ স্থাপনের পর রেসপন্স পাওয়ার জন্য অপেক্ষা করবে। যদি সার্ভার কোনো রেসপন্স না দেয় এবং নির্ধারিত সময়ের মধ্যে রেসপন্স না আসে, তাহলে একটি ত্রুটি ঘটবে।

এই দুটি টাইমআউট সেট করার জন্য অ্যাপাচি HTTP ক্লায়েন্টে RequestConfig ব্যবহার করা হয়।

Connection Timeout এবং Socket Timeout সেট করার উদাহরণ:

import org.apache.http.client.config.RequestConfig;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.HttpResponse;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.time.Duration;

public class TimeoutExample {
    public static void main(String[] args) {
        try {
            // Connection Timeout এবং Socket Timeout সেট করা
            int connectionTimeout = 5000; // 5 সেকেন্ড
            int socketTimeout = 10000; // 10 সেকেন্ড

            // RequestConfig তৈরি
            RequestConfig requestConfig = RequestConfig.custom()
                    .setConnectTimeout(connectionTimeout)  // Connection Timeout
                    .setSocketTimeout(socketTimeout)      // Socket Timeout
                    .build();

            // HttpClient তৈরি এবং RequestConfig সেট করা
            CloseableHttpClient httpClient = HttpClients.custom()
                    .setDefaultRequestConfig(requestConfig)
                    .build();

            HttpGet httpGet = new HttpGet("https://example.com");
            HttpResponse response = httpClient.execute(httpGet);  // রিকোয়েস্ট পাঠানো

            // রেসপন্স স্ট্যাটাস দেখানো
            System.out.println("Response Status: " + response.getStatusLine().getStatusCode());
            
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

ব্যাখ্যা:

  1. RequestConfig: এটি একটি কনফিগারেশন ক্লাস যা টাইমআউট সেট করার জন্য ব্যবহৃত হয়। এখানে setConnectTimeout এবং setSocketTimeout মেথডগুলি ব্যবহার করা হয়েছে:
    • setConnectTimeout(connectionTimeout): এটি সংযোগ স্থাপনের জন্য অপেক্ষা করার সময় নির্ধারণ করে।
    • setSocketTimeout(socketTimeout): এটি সংযোগ স্থাপনের পর সার্ভার থেকে রেসপন্স পাওয়ার জন্য অপেক্ষা করার সময় নির্ধারণ করে।
  2. HttpClients.custom(): এখানে RequestConfig ক্লাসটি কাস্টম HttpClient তৈরি করার সময় সেট করা হয়েছে।

Connection Timeout এবং Socket Timeout এর গুরুত্ব:

  • Connection Timeout: যদি সার্ভার অনুপস্থিত বা দেরিতে অনলাইনে আসে, তবে সংযোগের জন্য অপেক্ষা করতে সময় সীমিত করা গুরুত্বপূর্ণ।
  • Socket Timeout: এটি সুনির্দিষ্ট করে যে আপনি কত সময় পর্যন্ত সার্ভার থেকে রেসপন্স পাওয়ার জন্য অপেক্ষা করবেন। খুব বেশি সময় অপেক্ষা করা সিস্টেমের কার্যকারিতাকে প্রভাবিত করতে পারে, তাই এটি নিয়ন্ত্রণে রাখা উচিত।

সারাংশ:

অ্যাপাচি HTTP ক্লায়েন্টে Connection Timeout এবং Socket Timeout সেট করা একটি গুরুত্বপূর্ণ কনফিগারেশন যা সার্ভারের সাথে যোগাযোগের সময়সীমা নির্ধারণ করে। এটি অ্যাপ্লিকেশনকে আরও স্থিতিস্থাপক এবং সময়োপযোগী করে তোলে, বিশেষ করে যখন সার্ভারগুলির প্রতিক্রিয়া দেরি হয় বা নেটওয়ার্ক সমস্যার সম্মুখীন হয়।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion